home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / c / snz128s / src / rebuild.c < prev    next >
C/C++ Source or Header  |  1994-04-05  |  2KB  |  138 lines

  1. head    1.1;
  2. access;
  3. symbols;
  4. locks
  5.     user:1.1;
  6. comment    @// @;
  7.  
  8.  
  9. 1.1
  10. date    94.04.05.18.38.36;    author gbj;    state Exp;
  11. branches;
  12. next    ;
  13.  
  14.  
  15. desc
  16. @Version 1.28
  17. @
  18.  
  19.  
  20. 1.1
  21. log
  22. @Initial revision
  23. @
  24. text
  25. @//=========================================================
  26. //
  27. //    rebuild
  28. //
  29. //    Simple envelope for reindex.
  30. //
  31. //    It reads the active file ~\spool\news\nntp.dat and runs
  32. //    reindex for each group it finds.
  33. //
  34. //=========================================================
  35.  
  36. #include <stdio.h>
  37. #include <stdlib.h>
  38. #include <string.h>
  39.  
  40. void main(void)
  41. {
  42.     char *buf;
  43.     char *cmd;
  44.     char *file;
  45.     char *path;
  46.     char *f1;
  47.     int junk;
  48.     FILE *nntp;
  49.     
  50.     buf=(char*)malloc(81);
  51.     cmd=(char*)malloc(81);
  52.     file=(char*)malloc(129);
  53.     
  54.     if (!buf || !cmd || !file)
  55.     {
  56.         fprintf(stderr,"rebuild: Can't allocate memory\n");
  57.         if (buf)
  58.             free(buf);
  59.         if (cmd)
  60.             free(cmd);
  61.         if (file)
  62.             free(file);
  63.         exit(1);
  64.     }
  65.     
  66.     
  67.     path=getenv("NOS_ROOT");
  68.     if (!path)
  69.     {
  70.         fprintf(stderr, "rebuild: NOS_ROOT environment variable not defined\n");
  71.         free(buf);
  72.         free(cmd);
  73.         free(file);
  74.         exit(2);
  75.     }
  76.     
  77.     junk=strlen(path)-1;
  78.     if (path[junk] == '\\' || path[junk] == '/')
  79.         path[junk]='\0';
  80.         
  81.     strcpy(file, path);
  82.     strcat(file,"\\spool\\news\\nntp.dat");
  83.     fprintf(stderr,"Filepath is %s\n", file);
  84.     
  85.     nntp=fopen(file, "r");
  86.     if (!nntp)
  87.     {
  88.         fprintf(stderr, "rebuild: Cannot open %s\n", file);
  89.         free(buf);
  90.         free(cmd);
  91.         free(file);
  92.         exit(3);
  93.     }
  94.     
  95.     // Process the records in nntp.dat
  96.     // The format must be...
  97.     // NewsServer line
  98.     // blank line
  99.     // Groups, one per line, indented by whitespace
  100.     //
  101.     // NOTE: this program DOES NOT cope with multiple news servers.
  102.     
  103.     if (!fgets(buf, 80, nntp))
  104.     {
  105.         fprintf(stderr, "rebuild: news server line not found\n");
  106.         fclose(nntp);
  107.         free(buf);
  108.         free(cmd);
  109.         free(file);
  110.         exit(4);
  111.     }
  112.  
  113.     if (!fgets(buf, 80, nntp))
  114.     {
  115.         fprintf(stderr, "rebuild: blank flag line not found\n");
  116.         fclose(nntp);
  117.         free(buf);
  118.         free(cmd);
  119.         free(file);
  120.         exit(4);
  121.     }
  122.     
  123.     while (fgets(buf, 80, nntp))
  124.     {
  125.         f1=strtok(buf, " \t\r\n");
  126.         if (f1) {
  127.             sprintf(cmd, "reindex %s\n", f1);
  128.             junk=system(cmd);
  129.         }
  130.     }
  131.     
  132.     fclose(nntp);
  133.     free(buf);
  134.     free(cmd);
  135.     free(file);
  136.     exit(0);
  137. }@
  138.